package cifradordes;

public class cifrado {
    


public void aBinario(String mensaje){
    
  byte[] mensajeBytes = mensaje.getBytes();
  StringBuilder enBinario = new StringBuilder();
  StringBuilder impresion = new StringBuilder();

//TRANSFORMAMOS CADA CARACTER EN BLOQUES DE 8 BITS
//PARA ELLO UTILIZAMOS DIRECTAMENTE UNA FUNCION QUE TRANSFORMA EL CARACTER
//EN ASCII Y POSTERIORMENTE A BYTES (8 BITS)
  
    for (byte b : mensajeBytes){
        
        int bEntero = b;
     
            for (int i = 0; i < 8; i++){
                //si bEntero&128 == 0 concatenamos un 0, sino un 1
                enBinario.append((bEntero & 128)==0 ? 0 : 1);
                //Desplazamos un bit hacia la izquierda
                bEntero <<= 1;
            }
  
    }

//IMPRIMIMOS LOS BLOQUES RESULTANTES
  System.out.println("'" + mensaje + "' de largo " + enBinario.length() + " en binario es:");
  imprimir(enBinario,8);

  
//ELIMINAMOS LOS EL DIGITO MENOS SIGNIFICATIVO DE CADA BLOQUE DE 8
//QUEDANDO 8 BLOQUES DE 7 DÍGITOS CADA UNO
  for (int i=1; i<9 ; i++){
  
      int muerte = 8*i-i;
      enBinario.deleteCharAt(muerte);
      
  }

//IMPRIMIMOS LOS 8 BLOQUES DE 7 DÍGITOS RESULTANTES
  System.out.println("Eliminando digitos menos significativos el largo es: " + enBinario.length());
  imprimir(enBinario,7);
  
  
}
 



//FUNCION QUE TOMA UN STRINGBUILDER, AGREGA ESPACIOS AL FINAL DE CADA BLOQUE E IMPRIME
//RECIBE COMO ENTRADA UN STRINGBUILDER Y EL LARGO DESEADO PARA LOS BLOQUES
void imprimir(StringBuilder unido, int largoBloques){
 
    StringBuilder conEspacio = new StringBuilder(unido);
    
    for (int i=1 ; i<(unido.length()/largoBloques) ; i++){
    
        int espacio = largoBloques*i+(i-1);
        conEspacio.insert(espacio,' ');        
    }
    
System.out.println(conEspacio);
    
}



}